﻿using DeloUtils.Migra;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using System;
using System.Data.OleDb;

namespace TestDeloUtils
{
    
    
    /// <summary>
    ///Это класс теста для ExportTablesTest, в котором должны
    ///находиться все модульные тесты ExportTablesTest
    ///</summary>
    [TestClass()]
    public class ExportTablesTest
    {


        private TestContext testContextInstance;

        /// <summary>
        ///Получает или устанавливает контекст теста, в котором предоставляются
        ///сведения о текущем тестовом запуске и обеспечивается его функциональность.
        ///</summary>
        public TestContext TestContext
        {
            get
            {
                return testContextInstance;
            }
            set
            {
                testContextInstance = value;
            }
        }

        #region Дополнительные атрибуты теста
        // 
        //При написании тестов можно использовать следующие дополнительные атрибуты:
        //
        //ClassInitialize используется для выполнения кода до запуска первого теста в классе
        //[ClassInitialize()]
        //public static void MyClassInitialize(TestContext testContext)
        //{
        //}
        //
        //ClassCleanup используется для выполнения кода после завершения работы всех тестов в классе
        //[ClassCleanup()]
        //public static void MyClassCleanup()
        //{
        //}
        //
        //TestInitialize используется для выполнения кода перед запуском каждого теста
        //[TestInitialize()]
        //public void MyTestInitialize()
        //{
        //}
        //
        //TestCleanup используется для выполнения кода после завершения каждого теста
        //[TestCleanup()]
        //public void MyTestCleanup()
        //{
        //}
        //
        #endregion


        /// <summary>
        ///Тест для ExportDepartments
        ///</summary>
        [TestMethod()]
        [DeploymentItem("DeloUtils.exe")]
        public void ExportDepartmentsTest()
        {
            try
            {
                String ConnectionString = "Provider=SQLOLEDB.1;Initial Catalog=D12_DB;Data Source=.\\SQLEXPRESS;Persist Security Info=True;User ID=d12;Password=admin;Pooling=True;Connect Timeout=30";
                OleDbConnection connection = new OleDbConnection(ConnectionString);
                connection.Open();
                ExportTables_Accessor.localdb = new LocalDBCompact_Accessor("c:\\TEMP\\protocol.sdf", TModeLocalDB_Accessor.Create);
                try
                {
                    ExportTables_Accessor.ExportDepartments(connection);
                }
                catch (Exception ex)
                {
                    Assert.Fail(ex.Message);
                    return;
                }
                finally
                {
                    connection.Close();
                }
                OleDbCommand cmd = new OleDbCommand("select count(*) from DEPARTMENT", ExportTables_Accessor.localdb.Connection);
                Int32 cnt = (Int32)cmd.ExecuteScalar();
                ExportTables_Accessor.localdb.Connection.Close();
                Assert.AreNotEqual<Int32>(cnt, 0);
            }
            catch (Exception ex)
            {
                Assert.Inconclusive(ex.Message);
            }
        }
        /// <summary>
        ///Тест для ExportDocgroups
        ///</summary>
        [TestMethod()]
        [DeploymentItem("DeloUtils.exe")]
        public void ExportDocgroupsTest()
        {
            try
            {
                String ConnectionString = "Provider=SQLOLEDB.1;Initial Catalog=D12_DB;Data Source=.\\SQLEXPRESS;Persist Security Info=True;User ID=d12;Password=admin;Pooling=True;Connect Timeout=30";
                OleDbConnection connection = new OleDbConnection(ConnectionString);
                connection.Open();
                ExportTables_Accessor.localdb = new LocalDBCompact_Accessor("c:\\TEMP\\protocol.sdf", TModeLocalDB_Accessor.Create);
                try
                {
                    ExportTables_Accessor.ExportDocgroups(connection);
                }
                catch (Exception ex)
                {
                    Assert.Fail(ex.Message);
                    return;
                }
                finally
                {
                    connection.Close();
                }
                OleDbCommand cmd = new OleDbCommand("select count(*) from DOCGROUP", ExportTables_Accessor.localdb.Connection);
                Int32 cnt = (Int32)cmd.ExecuteScalar();
                ExportTables_Accessor.localdb.Connection.Close();
                Assert.AreNotEqual<Int32>(cnt, 0);
            }
            catch (Exception ex)
            {
                Assert.Inconclusive(ex.Message);
            }
        }
    }
}
